package com.yuanzong.wuliu.service.admin.auth;

import com.yuanzong.wuliu.common.utils.password.MD5Utils;
import com.yuanzong.wuliu.common.vo.ApiResult;
import com.yuanzong.wuliu.controller.admin.auth.param.AdminRuntimeUserModifyPasswordParam;
import com.yuanzong.wuliu.controller.intercdeptor.AdminHandlerInterceptorAdapter;
import com.yuanzong.wuliu.model.system.user.SystemUser;
import com.yuanzong.wuliu.service.system.user.factory.SystemUserFactory;
import org.springframework.stereotype.Service;

@Service
public class AdminRuntimeUserService {

    public ApiResult info() throws Exception {
        // ===================================================================================//
        // ===== 当前登陆用户
        // ===================================================================================//
        SystemUser runtimeUser = AdminHandlerInterceptorAdapter.getRuntimeUser();
        // ===================================================================================//
        // ===== 返回结果
        // ===================================================================================//
        runtimeUser.setPassword(null);
        return ApiResult.success(runtimeUser);
    }

    public ApiResult modifyPassword(AdminRuntimeUserModifyPasswordParam param) throws Exception {
        // ===================================================================================//
        // ===== 当前登陆用户
        // ===================================================================================//
        SystemUser runtimeUser = AdminHandlerInterceptorAdapter.getRuntimeUser();
        // ===================================================================================//
        // ===== 参数验证
        // ===================================================================================//
        if (param == null) {
            throw new Exception("参数为空");
        }
        // ===================================================================================//
        // ===== 业务执行
        // ===================================================================================//
        runtimeUser.setPassword(MD5Utils.MD5(param.getPassword()));
        SystemUserFactory.getSystemUserService().updateById(runtimeUser);
        return ApiResult.success();
    }

    public ApiResult logout() throws Exception {
        // ===================================================================================//
        // ===== 当前登陆用户
        // ===================================================================================//
        SystemUser runtimeUser = AdminHandlerInterceptorAdapter.getRuntimeUser();
        // ===================================================================================//
        // ===== 业务执行
        // ===================================================================================//
        AdminHandlerInterceptorAdapter.removeRuntimeUser(AdminHandlerInterceptorAdapter.getRuntimeToken());
        return ApiResult.success();
    }
}
